/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.jm.financeiro.filter;

import br.jm.financeiro.base.eao.EaoException;
import br.jm.financeiro.entity.TipoDocumento;
import br.jm.financeiro.sistema.eao.TipoDocumentoEao;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;

/**
 *
 * @author joao
 */
public class TipoDocumentoConverter implements Converter {

    /**
     *
     */
    public static List<TipoDocumento> tipoDocumentoDB;
    private TipoDocumentoEao tipoocumentoEAO = TipoDocumentoEao.getInstance();

    public TipoDocumentoConverter() {
        try {
            tipoDocumentoDB = tipoocumentoEAO.getNative("TipoDocumento", 0, tipoocumentoEAO.getCount("TipoDocumento"), null, true, null, null, " tip_documento = 'Proposta' ");
        } catch (Exception ex) {
            //Logger.getLogger(TipoDocumentoConverter.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public Object getAsObject(FacesContext facesContext, UIComponent component, String submittedValue) {
        if (submittedValue.trim().equals("")) {
            return null;
        } else {
            try {
                int number = Integer.parseInt(submittedValue);

                for (TipoDocumento p : tipoDocumentoDB) {
                    if (p.getIdDocumento() == number) {
                        return p;
                    }
                }

            } catch (NumberFormatException exception) {
                throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro na Conversão", "Documento Inválido"));
            }
        }

        return null;
    }

    @Override
    public String getAsString(FacesContext facesContext, UIComponent component, Object value) {
        if (value == null || value.equals("")) {
            return "";
        } else {
            return String.valueOf(((TipoDocumento) value).getIdDocumento());
        }
    }
}